<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of pessoa_cadastro_model
 *
 * @author link
 */
class Anuncio_veiculo_model extends CI_Model {

    public function __construct() {
        parent::__construct();
        $this->load->config('motocerto/parametros');
    }

    public function consultarAnuncio($anuncio) {
        $this->db->select('av.id, av.pessoa_id, av.nome_proprietario, av.preco, av.placa, av.renavam, av.quilometragem, ' .
                'av.ano_fabricacao, av.observacao, DATE(av.data) as data, av.moto_modelo_dados_id, mmd.ano, mmd.preco_medio, ' .
                'mm.nome as modelo, mm.cilindrada, ma.nome as marca, pe.cidade, pe.estado, me.nome as estilo, ' .
                'av.plano_id');

        $this->db->join($this->config->item('dbCliente') . $this->config->item('tblMotoModeloDados') . ' as mmd', 'mmd.id = av.moto_modelo_dados_id', 'INNER');
        $this->db->join($this->config->item('dbCliente') . $this->config->item('tblMotoModelo') . ' as mm', 'mm.id = mmd.moto_modelo_id', 'INNER');
        $this->db->join($this->config->item('dbCliente') . $this->config->item('tblMotoMarca') . ' as ma', 'ma.id = mm.marca_id', 'INNER');
        $this->db->join($this->config->item('dbCliente') . $this->config->item('tblPessoaEndereco') . ' as pe', 'pe.pessoa_id = av.pessoa_id', 'INNER');
        $this->db->join($this->config->item('dbCliente') . $this->config->item('tblMotoEstilo') . ' as me', 'mm.estilo_id = me.id', 'LEFT OUTER');

        $this->db->where('av.id', $anuncio);

        $query = $this->db->get($this->config->item('dbCliente') . $this->config->item('tblAnuncioVeiculos') . ' as av');

        //pre($this->db->last_query());

        if ($query->num_rows() > 0) {
            return $query->row();
        } else {
            return null;
        }
    }

    public function consultarPreco($modelo, $tipo = 'AVG') {
        $this->db->select($tipo . '(preco) as valor');
        $this->db->where('moto_modelo_dados_id', $modelo);
        $query = $this->db->get($this->config->item('dbCliente') . $this->config->item('tblAnuncioVeiculos') . ' as av');

        if ($query->num_rows() > 0) {
            return $query->row();
        } else {
            return null;
        }
    }

    public function consultarAnunciosTag($tags, $estado = null, $cidade = null, $cilindrada = null, $km = null, $ano = null, $cor = null, $partida = null, $regiao = false) {
        $this->db->select('av.id, av.preco, av.ano_fabricacao, av.quilometragem, av.data, mm.cilindrada, mm.nome as modelo, mmd.ano as ano_modelo, pe.cidade, pe.estado, ma.nome as marca, now() as agora, p.nome as plano, p.valor as plano_valor, av.anuncio_status_id');

        $this->db->join($this->config->item('dbCliente') . $this->config->item('tblPlano') . ' as p', 'p.id = av.plano_id', 'INNER');
        $this->db->join($this->config->item('dbCliente') . $this->config->item('tblMotoModeloDados') . ' as mmd', 'mmd.id = av.moto_modelo_dados_id', 'INNER');
        $this->db->join($this->config->item('dbCliente') . $this->config->item('tblMotoModelo') . ' as mm', 'mm.id = mmd.moto_modelo_id', 'INNER');
        $this->db->join($this->config->item('dbCliente') . $this->config->item('tblPessoaEndereco') . ' as pe', 'pe.pessoa_id = av.pessoa_id', 'INNER');
        $this->db->join($this->config->item('dbCliente') . $this->config->item('tblMotoMarca') . ' as ma', 'ma.id = mm.marca_id', 'INNER');
        if ($cor != null || $partida != null) {
            $this->db->join($this->config->item('dbCliente') . $this->config->item('tblAnuncioVeiculosCaracteristica') . ' as ac', 'av.id = ac.anuncio_veiculos_id', 'INNER');
        }

        if ($tags != null || $tags != '') {
            $tags = explode(' ', $tags);
            foreach ($tags as $key => $value) {
                $this->db->join($this->config->item('dbCliente') . $this->config->item('tblAnuncioTags') . ' as at' . $key, 'av.id = at' . $key . '.anuncio_veiculos_id and at' . $key . '.tags_id = (select tags_id from tags_info where nome = \'' . $value . '\')', 'INNER');
            }
        }


        $this->db->where('av.anuncio_status_id', '1');
        if ($estado != null) {
            $this->db->where('pe.estado', $estado);
        }

        if ($cidade != null) {
            if ($regiao != false) {
                $this->db->where('pe.cep like', '(select concat(left(pe.cep, 2), "%") from pessoa_endereco pe2 where pe2.cidade = "'.$cidade.'" limit 1)', false);
            } else {
                $this->db->where('pe.cidade', $cidade);
            }
        }

        if ($cilindrada != null) {
            $this->db->where('mm.cilindrada', $cilindrada);
        }

        if ($km != null) {
            $this->db->where('av.quilometragem <=', $km);
        }

        if ($ano != null) {
            $this->db->where('mmd.ano', $ano);
        }

        if ($cor != null) {
            $this->db->where('ac.moto_caracteristica_valor_id', $cor);
        }

        if ($partida != null) {
            $this->db->where('ac.moto_caracteristica_valor_id', $partida);
        }


        $query = $this->db->get($this->config->item('dbCliente') . $this->config->item('tblAnuncioVeiculos') . ' as av');

        //pre($this->db->last_query());

        if ($query->num_rows() > 0) {
            return $query->result();
        } else {
            return null;
        }
    }

    public function cosultarVeiculosHome($marca, $modelo, $ano, $precos, $status = null, $pessoa = null, $in = null) {
        $this->db->select('av.id, av.preco, av.ano_fabricacao, av.quilometragem, av.data, mm.cilindrada, mm.nome as modelo, mmd.ano as ano_modelo, pe.cidade, pe.estado, ma.nome as marca, now() as agora, s.nome as status, p.nome as plano, p.valor as plano_valor, av.anuncio_status_id');

        $this->db->join($this->config->item('dbCliente') . $this->config->item('tblPlano') . ' as p', 'p.id = av.plano_id', 'INNER');
        $this->db->join($this->config->item('dbCliente') . $this->config->item('tblMotoModeloDados') . ' as mmd', 'mmd.id = av.moto_modelo_dados_id', 'INNER');
        $this->db->join($this->config->item('dbCliente') . $this->config->item('tblMotoModelo') . ' as mm', 'mm.id = mmd.moto_modelo_id', 'INNER');
        $this->db->join($this->config->item('dbCliente') . $this->config->item('tblPessoaEndereco') . ' as pe', 'pe.pessoa_id = av.pessoa_id', 'INNER');
        $this->db->join($this->config->item('dbCliente') . $this->config->item('tblMotoMarca') . ' as ma', 'ma.id = mm.marca_id', 'INNER');
        $this->db->join($this->config->item('dbCliente') . $this->config->item('tblAnuncioStatusInfo') . ' as s', 's.anuncio_status_id = av.anuncio_status_id', 'INNER');

        if ($marca != false) {
            $this->db->where('ma.id', $marca);
        }

        if ($modelo != false) {
            $this->db->where('mm.id', $modelo);
        }

        if ($ano != false) {
            $this->db->where('av.moto_modelo_dados_id', $ano);
        }

        if ($precos != false) {
            if ($precos['2'] != null) {
                $this->db->where('av.preco BETWEEN ' . $precos['1'] . ' AND ' . $precos['2']);
            } else {
                $this->db->where('av.preco >= ' . $precos['1']);
            }
        }

        if ($status != null) {
            $this->db->where('av.anuncio_status_id', $status);
        }

        if ($pessoa != null) {
            $this->db->where('av.pessoa_id', $pessoa);
        }

        if ($in != null) {
            $this->db->where('av.id IN (' . $in . ')');
        }

        if ($pessoa == null) {
            $this->db->order_by('p.prioridade', 'ASC');
            $this->db->order_by('rand()', 'ASC');
        } else {
            $this->db->order_by('av.id', 'DESC');
        }
        $query = $this->db->get($this->config->item('dbCliente') . $this->config->item('tblAnuncioVeiculos') . ' as av');

        //pre($this->db->last_query());

        if ($query->num_rows() > 0) {
            return $query->result();
        } else {
            return null;
        }
    }

    public function consultarCorVeiculo($_tipo, $_anuncio) {
        $this->db->join($this->config->item('dbCliente') . $this->config->item('tblAnuncioVeiculosCaracteristica') . ' as c', 'v.id = c.moto_caracteristica_valor_id', 'INNER');
        $this->db->where('v.marca_caracteristicas_id', $_tipo);
        $this->db->where('c.anuncio_veiculos_id', $_anuncio);

        $query = $this->db->get($this->config->item('dbCliente') . $this->config->item('tblMotoCaracteristicaValor') . ' as v');

        if ($query->num_rows() > 0) {
            return $query->row();
        } else {
            return null;
        }
    }

    public function consultarCaracteristicas($_tipo, $_anuncio) {
        $this->db->join($this->config->item('dbCliente') . $this->config->item('tblAnuncioVeiculosCaracteristica') . ' as c', 'v.id = c.moto_caracteristica_valor_id', 'INNER');
        $this->db->where('v.marca_caracteristicas_id', $_tipo);
        $this->db->where('c.anuncio_veiculos_id', $_anuncio);

        $query = $this->db->get($this->config->item('dbCliente') . $this->config->item('tblMotoCaracteristicaValor') . ' as v');

        if ($query->num_rows() > 0) {
            return $query->result();
        } else {
            return null;
        }
    }

    public function cadastrar($_dados = array()) {
        $this->db->set($_dados);
        $this->db->insert($this->config->item('dbCliente') . $this->config->item('tblAnuncioVeiculos'));
        if ($this->db->affected_rows() > 0) {
            return $this->db->insert_id();
        } else {
            return NULL;
        }
    }

    public function cadastrarCaracteristicas($_dados = array()) {
        $this->db->set($_dados);
        $this->db->insert($this->config->item('dbCliente') . $this->config->item('tblAnuncioVeiculosCaracteristica'));
        if ($this->db->affected_rows() > 0) {
            return $this->db->insert_id();
        } else {
            return NULL;
        }
    }

    public function alterar($_dados, $_id) {
        $this->db->where('id', $_id);
        $this->db->set($_dados);
        $this->db->update($this->config->item('dbCliente') . $this->config->item('tblAnuncioVeiculos'));
        if ($this->db->affected_rows() > 0) {
            return $_id;
        } else {
            return NULL;
        }
    }

    public function consultar($_id) {
        $this->db->where($this->config->item('tblAnuncioVeiculos') . '.id', $_id);

        $query = $this->db->get($this->config->item('tblAnuncioVeiculos'));

        if ($this->db->affected_rows() > 0) {
            return $query->row();
        } else {
            return NULL;
        }
    }

    public function consultarTotal() {
        $query = $this->db->get($this->config->item('tblAnuncioVeiculos'));

        if ($query->num_rows() > 0) {
            return $query->result();
        } else {
            return NULL;
        }
    }

    public function consutlarQtdadeImagens($anuncio) {
        $this->db->select('COUNT(id) AS quantidade');
        $this->db->where('anuncio_veiculos_id', $anuncio);

        $query = $this->db->get($this->config->item('tblAnuncioImagens'));

        if ($query->num_rows() > 0) {
            return $query->row();
        } else {
            return NULL;
        }
    }

    public function consultarImagens($anuncio) {
        $this->db->select('i.*');
        $this->db->join($this->config->item('dbCliente') . $this->config->item('tblAnuncioImagens') . ' as a', 'a.imagens_id = i.id', 'INNER');
        $this->db->where('a.anuncio_veiculos_id', $anuncio);
        $this->db->order_by('rand()');
        $query = $this->db->get($this->config->item('tblImagens') . ' as i');

        if ($query->num_rows() > 0) {
            return $query->result();
        } else {
            return NULL;
        }
    }

    public function inserirImagem($_dados = array()) {
        $this->db->set($_dados);
        $this->db->insert($this->config->item('dbCliente') . $this->config->item('tblAnuncioImagens'));
        if ($this->db->affected_rows() > 0) {
            return $this->db->insert_id();
        } else {
            return NULL;
        }
    }

}

?>
